package com.dq.Week3.day13;

import com.dq.Week3.day13.mail.MailInfo;

import java.util.*;

/**
 * 演示TreeSet的用法
 *
 * 去重且排序
 *
 * 去重原理
 * 根据 Comparable 接口中的 compareTo方法的返回值，如果为0，认为两个元素相同，进去去重
 * 把 较小的 元素排在前面
 */
public class TreeSetDemo {
    public static void main(String[] args) {

        Student stu1 = new Student("刘晓蕾", 16);
        Student stu2 = new Student("刘晓蕾", 16);

        ArrayList<Student> students = new ArrayList<>();
        students.add(new Student("张峻豪",19));
        students.add(new Student("b程锐",18));
        students.add(new Student("a程锐",18));
        students.add(stu1);
        students.add(stu2);
        System.out.println(students);

        TreeSet<Student> set = new TreeSet<Student>(new Comparator<Student>() {
            @Override
            public int compare(Student o1, Student o2) {

                String name1 = o1.getName();
                String name2 = o2.getName();
                Integer age1 = o1.getAge();
                Integer age2 = o2.getAge();
                int i = age1.compareTo(age2);
                if (i==0){
                    int i1 = name1.compareTo(name2);
                    return i1;

                }else {
                    return i;
                }
            }
        });

        set.addAll(students);
        System.out.println(set);


//        MailInfo m1 = new MailInfo("steam", "abc", new Date(), "djl");
//        MailInfo m2 = new MailInfo("Gitee", "f仓库变更", new Date(System.currentTimeMillis()-1000000), "aaa");
//        MailInfo m3 = new MailInfo("steam", "b账号被登录了", new Date(), "djl");
//        MailInfo m4 = new MailInfo("Gitee", "f仓库变更", new Date(), "djl");
//
//        ArrayList<MailInfo> mailInfos = new ArrayList<>();
//        mailInfos.add(m1);
//        mailInfos.add(m2);
//        mailInfos.add(m3);
//        mailInfos.add(m4);
//
//        System.out.println(mailInfos);

        // com.qf.day13.mail.MailInfo cannot be cast to java.lang.Comparable
//        TreeSet<MailInfo> set = new TreeSet<>(mailInfos);
//        System.out.println(set);




//        List<Integer> list = new ArrayList<>();
//        list.add(100);
//        list.add(100);
//        list.add(50);
//        list.add(1);
//        list.add(15);
//        list.add(7);
//        System.out.println(list);

//        ArrayList<String> list = new ArrayList<>();
//
//        list.add("hello");
//        list.add("hello");
//        list.add("hello");
//        list.add("world");
//        list.add("nice");
//        list.add("nice");
//        list.add("to");
//        list.add("to");
//        list.add("meet");
//        list.add("meet");
//        list.add("you");
//        list.add("you");
//        System.out.println(list);
//
//
//        // 使用TreeSet对集合中的元素进行去重并且排序
//        TreeSet<String> set = new TreeSet<>(list);
//        System.out.println(set);

    }
}